const fs = require("fs");

const rs = fs.createReadStream("test.txt", {
  flags: "r",
  encoding: null, // 默认返回buffer
  fd: null,
  mode: 438,
  autoClose: true,
  start: 0, // 从那开始读
  // end: 3,          // 读取结束
  highWaterMark: 4, // 缓冲区大小, 默认为64kb
});

/* rs.on("data", (chunk) => {
  console.log(chunk.toString());
  // 流动模式转换为暂停模式
  rs.pause();
  setTimeout(() => {
    rs.resume();
  }, 1000);
}); */

/* rs.on("readable", () => {
  // let data = rs.read();
  // console.log(data);
  let data;
  // 从缓存区获取1个字节的数据
  while ((data = rs.read(1)) !== null) {
    console.log(data.toString());
    console.log("---", rs._readableState.length);
  }
}); */

// 当rs被创建后就会执行
rs.on("open", (fd) => {
  console.log(fd, "文件打开了");
});

// 只有流数据被消费完才会触发这个事件
rs.on("close", () => {
  console.log("文件关闭了");
});

// 消费数据
let bufferArr = [];
rs.on("data", (chunk) => {
  bufferArr.push(chunk);
  console.log("🚀 ~ rs.on ~ chunk:", chunk);
});

// 数据消费完毕
rs.on("end", () => {
  console.log(Buffer.concat(bufferArr).toString());
  console.log("当数据被清空之后");
});

// 错误
rs.on("error", (err) => {
  console.log("error", err);
});
